شبکه های عصبی در کنترل دانشگاه نجف آباد درس: کنترل هوشمند در فضای سایبرنتیک مدرس: حمید محمودیان مدل ریاضی نرون مدل ریاضی یک نرون ساده به صورت روبرو است P: مقدار کمیت ورودی b: مقدار بایاس )عرض از مبدا تابع نهایی در حالت خطی. معموال در طول آموزش تغییر میکند( W: وزن نرون )مهمترین مقدار نرون که در طول آموزش تغییر میکند( f: تابع خروجی )خطی یا غیر خطی( a: مقدار خروجی آموزش نرون: تغییر مقدار بایاس و وزن ها در طول مدت آموزش به نحوی که خروجی نرون به مقدار مطلوب نزدیک گردیده و بتواند برای مقادیر ورودی جدید تصمیمات درست بگیرد. 1
توابع خروجی (f) توابع متنوعی برای تابع خروجی در نظر گرفته شده است. دستورات نوشته شده دستورات متلب میباشند. معموال در روش های آموزش به صورت Back propagation از توابعی استفاده میشود که مشتق پذیرند مثل tangant یا logarithm نرون با چند ورودی یک نرون میتواند به جای یک ورودی اسکالر یک بردار ورودی داشته باشد. در این صورت وزن ها به صورت برداری در نظر گرفته شده و آموزش میبینند. 2
شبکه تک الیه باچند خروجی )- sنرون( ممکن است مدل مورد نظر دارای چند خروجی باشد. دراینصورت خروجی های هر نرون در کنار هم یک بردار خروجی را مشخص میکنند. در این حال بردار وزن تبدیل به ماتریس وزن w 1,1 w 1,R میشود. W = w s,1 w s,r شبکه با چند الیه و چند ورودی و چند خروجی برای افزایش توانایی شبکه های عصبی و شباهت بیشتر به فرایند های بیولوژیکی در مغز انسان تعداد الیه های شبکه ممکن است گسترش یابد که عمال باعث پیچیدگی بیشتر شبکه نیز خواهد شد. کامال مشخص است که در این شبکه ماتریسهای وزنی متعددی )ماتریسهای W( خواهیم داشت که الزم است در فرایند آموزش به همراه ضرایب بایاس ها ( bها( تعیین گردند. 3
روابط یک شبکه چند الیه در شکل مقابل یک شبکه با چند الیه مشاهده میشود. نحوه تصمیم گیری در هر نرون مطابق روابط زیرشکل است. تابع (.)g توابع مختلفی میتوانند باشند که قبال معرفی شده اند. به این شبکه عموما Multy Layer (MLP) Perceptron گفته میشود. روند طراحی و مدلسازی. 1 ساختار شبکه از لحاظ تعداد الیه ها تعداد نرونها توابع تصمیم گیری در الیه ها تعداد ورودیها و خروجی ها انتخاب گردد.. 2 پارامتر های مهم درنحوه آموزش مثل خطا تعداد epochs ها )دفعات تکرار برای همگرایی به سمت خطای کمتر( الگوریتم آموزش فراخوانی میشود.. 3 شبکه پس از اعتبارسنجی جهت استفاده برای نمونه های جدید مورد استفاده قرار. 4 میگیرد. 4
نمونه ای از دستورات متلب در جعبه ابزار متلب روشهای مختلفی برای ایجاد شبکه های عصبی با ساختار متفاوت ارائه شده است. یکی از روشهای نسبتا ساده و کامل برای ایجاد یک شبکه عصبی با کمک سه دستور زیر است:. 1 استفاده از دستور newff برای تعریف ساختار شبکه. 2 استفاده از دستور train برای آموزش شبکه به کمک اطالعات و نمونه های آموزشی. 3 استفاده از دستور sim برای دریافت پاسخ شبکه در برابر نمونه های جدید. ساختارشبکه مثال قبل )دقت شود که تعداد الیه ها 2 است( تعریف ساختار شبکه newff(p,t,s,tf,btf,blf,pf,ipf,opf,ddf) takes optional inputs, TFi - Transfer function of ith layer. Default is 'tansig' for hidden layers, and 'purelin' for output layer. BTF - Backprop network training function, default = 'trainlm'. BLF - Backprop weight/bias learning function, default = 'learngdm'. PF - Performance function, default = 'mse'. IPF - Row cell array of input processing functions. Default is {'fixunknowns','remconstantrows','mapminmax'}. OPF - Row cell array of output processing functions. Default is {'remconstantrows','mapminmax'}. DDF - Data division function, default = 'dividerand'; and returns an N layer feed-forward backprop network. The transfer functions TF{i} can be any differentiable transfer function such as TANSIG, LOGSIG, or PURELIN. The training function BTF can be any of the backprop training functions such as TRAINLM, TRAINBFG, TRAINRP, TRAINGD, etc. آموزش شبکه دریافت پاسخ شبکه 5
مثال فرض کنید که هدف ایجاد یک مدل ریاضی است که دارای یک ورودی و یک خروجی است و بخواهیم با تغییر ورودی در حد فاصل 2- و 2 شکل خروجی به صورت زیر تغییر کند. این مثال میتواند با ایجاد یک شبکه عصبی به فرم زیر که دارای دو الیه باشد ایجاد گردد. که در آن توابع خروجی الیه اول بصورت زیر هستند تابع خروجی الیه آخر بصورت خطی تعریف میشود: نتایج شبیه سازی با دستورات متلب ماتریسهای ورودی و خروجی )تعداد سطرهای ماتریس خروجی تعداد نرونها در الیه خروجی را مشخص میکند Y output 2.5 2 1.5 1 0.5 0 >> load output_data >> load input_data >> net1=newff(input_data,output_data,[2],{'logsig','purelin'}); تابع انتخاب شده برای الیه خروجی تعداد نرون ها در الیه مخفی >> net2=train(net1,input_data,output_data); تابع انتخاب شده برای الیه مخفی >> x=-2:0.2:2; >> y=sim(net2,x); >> plot(x,y) -0.5-2 -1.5-1 -0.5 0 0.5 1 1.5 2 X input 6
استفاده شبکه های عصبی در کنترل روشهای متنوعی از استفاده شبکه های عصبی در شناسایی سیستم های بیولوژیکی و کنترل آنها ارائه شده است. از جمله این روشها میتوان به موارد زیر اشاره نمود:. 1 کنترل مدل مرجع Control) ( Reference Model کنترل پیش بین مدل Control) (Model Predictive 2. کنترل NARMA-L2. 3 کنترل کننده مدل مرجع با شبکه های عصبی ساختار کنترل کننده مدل مرجع با شبکه های عصبی به صورت روبرو میباشد. در این دیاگرام دو شبکه عصبی به عنوان مدل حلقه باز و کنترل کننده مشاهده میشود. هر شبکه دارای دو الیه است )مخفی و خروجی( که تعداد نرون های الیه مخفی قابل تغییر میباشد. همانطور که مشاهده میشود کنترل کننده شبکه عصبی شامل سه دسته ورودی میشود:خروجیهای تاخیر یافته کنترلر ورودیهای تاخیر یافته ورودی مرجع و خروجیهای تاخیر یافته مدل تحت کنترل. ساختار شبکه عصبی مدل تحت کنترل نیز شامل دو دسته ورودی است: خروجیهای تاخیر یافته سیگنال کنترل )ورودیهای مدل تحت کنترل( و خروجیهای تاخیر یافته مدل تحت کنترل. 7
مثال و روش استفاده از متلب در طراحی کنترل کننده مرجع با شبکه های مصنوعی فرض کنید که هدف طراحی یک کنترل کننده شبکه عصبی مصنوعی مدل مرجع Model) (Reference باشد که بر روی مدل روبرو قرار بگیرد. همچنین فرض کنید که هدف طراحی کنترل کننده ای باشد که باعث گردد تا خروجی سیستم رفتاری شبیه به مدل روبرو داشته باشد )مدل مرجع( 8
مراحل طراحی. 1 الزم است در ابتدا برای مدلسازی با شبکه عصبی برای مدل بدون فیدبک و مدل مرجع تعداد زیادی مقادیر ورودی و خروجی داشته باشید. برای این منظور ابتدا در سیمولینک مدل حلقه باز را طراحی کرده و آنرا به اسم یک فایل ذخیره نمایید.. 2 فرض کنید که فایل را با نام mvp1 ذخیره کرده اید.. 3 فایل دیگری با نام دیگر مثال mvp2 برای مدل مرجع )در این مثال: مدل حلقه بسته( در نظر گرفته در فایل دیگری مثال با نام sym1 بلوکهای زیر را قرار داده و اتصاالت را برقرار نمایید با کلیک کردن بر روی قسمت آبی رنگ ابتدا منوی اصلی باز میشود. در این منو سوئیچ plant identification را کلیک کنید. با وارد نمودن تعداد الیه های مخفی و دیگر مشخصات مثال تعداد نمونه های با تاخیرو ادرس دهی فایل اول در قسمت simulink plant model سوئیچ Generate training data برای آماده سازی داده ها استفاده میشود. بعد از آماده سازی داده ها شبکه عصبی مدل حلقه باز با دستور train network و با تکمیل جعبه training parameters انجام و با زدن سوئیچok به پنجره model reference control بازگردانیده میشود. 9
در مرحله آخر با فراخوانی فایل مدل مرجع وتکمیل موارد خواسته شده و پس از آموزش شبکه عصبی مدل مرجع طراحی کنترل کننده Controller) (train عملی خواهد بود. 10
کنترل پیش بین مدل Control) (Model Predictive هدف از طراحی این نوع کنترل کننده پیش بینی آینده مدل تحت کنترل و طراحی یک کنترل کننده )در این درس براساس شبکه های عصبی( میباشد. شبکه عصبی مورد استفاده جهت پیش بینی مدل بکار گرفته میشود. بنابراین اولین قدم ایجاد یک شبکه عصبی برای تخمین مدل تحت کنترل است. مدل تخمین زده شده برای پیش بینی رفتار مدل در آینده استفاده میشود. کنترل کننده پیش بین شبکه عصبی سعی در پیش بینی آینده سیستم تحت کنترل خواهد داشت. کنترل کننده پیش بین با استفاده از تخمین آینده سیستم سعی در ایجاد سیگنال کنترلی خواهد داشت که رابطه زیر را مینیمم کند. N1 و N2 و Nu محدوده زمانی آینده هستند که در این محدوده اینده سیستم پیش بینی شده است عدد ρ بیانگر میزان اثر بهینه سازی سیگنال کنترل میباشد 11
ابتدا مدل تخت کنترل ایجاد میگردد. )مثال مدل بیماری (. HIV این فایل با نام HIV1 شناخته میشود نحوه طراحی سپس این فایل در فایل دوم در کنار جعبه NN_predictive Controller قرار میگیرد. این فایل به نام HIV2_nnpredictive فرض میگردد. تنضیمات NN_predictive controller انجام میگردد که در چندین مرحله است. 12
2. تنظیم پارامتر های شبکه عصبی و تولید داده های آموزشی Train network سپس Generate )و Training Data ). 1 تنظیم مشخصات کنترل کننده پیش بین و Plant Identification 3. اجرای برنامه پارامتر های این دو پنجره به صورت زیر تکمیل میگردند. 13